#!/bin/bash

echo “===== 开始设置环境变量 =====”

# 首先检查环境变量是否已存在
if [ -n "$ZBP_BASE_PATH" ]; then
    echo "环境变量 ZBP_BASE_PATH 已存在: $ZBP_BASE_PATH"
    echo "不执行后续操作"
    exit 0
fi

# 如果不存在的话，创建/data目录
if [ ! -d "/data" ]; then
    mkdir /data
else
    echo "目录 /data 存在"
fi

# 定义需要检查的目录列表，可以根据实际情况修改
CHECK_DIRS=(
    "/data"
    "/home"
    "/"
)

# 定义最小空间要求 (150G = 200 * 1024 * 1024 KB)
MIN_REQUIRED_KB=$((150 * 1024 * 1024))

# 初始化变量
max_size=0
max_dir=""
sizes=()  # 存储所有有效目录的磁盘大小
valid_dirs=()  # 存储符合最小空间要求的目录

# 遍历目录并检查磁盘空间
for dir in "${CHECK_DIRS[@]}"; do
    # 检查目录是否存在
    if [ -d "$dir" ]; then
        # 获取目录所在磁盘的总空间（以KB为单位）
        size=$(df -P "$dir" | awk 'NR==2 {print $2}')
        
        # 转换为数字进行比较
        size_num=$((size))
        
        # 检查是否满足最小空间要求
        if [ $size_num -ge $MIN_REQUIRED_KB ]; then
            echo "目录 $dir 的磁盘总空间为 $size_num KB (满足最小要求: ${MIN_REQUIRED_KB} KB)"
            sizes+=($size_num)
            valid_dirs+=("$dir")
            
            # 比较大小并更新最大值
            if [ $size_num -gt $max_size ]; then
                max_size=$size_num
                max_dir="$dir"
            fi
        else
            echo "目录 $dir 的磁盘总空间为 $size_num KB (不满足最小要求: ${MIN_REQUIRED_KB} KB，已跳过)"
        fi
    else
        echo "目录 $dir 不存在，跳过检查"
    fi
done

# 检查是否有符合要求的有效目录
if [ ${#valid_dirs[@]} -eq 0 ]; then
    echo "错误：没有找到磁盘空间大于等于150G的有效目录"
    exit 1
fi

# 检查所有有效目录的大小是否相同
all_same=true
first_size=${sizes[0]}
for size in "${sizes[@]}"; do
    if [ "$size" -ne "$first_size" ]; then
        all_same=false
        break
    fi
done

# 如果所有大小相同，优先选择/data
if [ "$all_same" = true ]; then
    echo "所有符合要求的目录磁盘空间相同"
    # 检查/data是否在有效目录中
    if [[ " ${valid_dirs[@]} " =~ " /data " ]]; then
        max_dir="/data"
    else
        echo "/data目录不在符合要求的目录中，使用默认找到的最大目录"
    fi
fi

echo "最终选择的目录是: $max_dir"

# 设置环境变量
echo "已设置环境变量: ZBP_BASE_PATH=$max_dir"

mkdir -p $max_dir/zbp/apps
mkdir -p $max_dir/zbp/software

# 永久生效
echo "export ZBP_BASE_PATH=$max_dir" >> /etc/profile
source /etc/profile 

echo "===== 环境变量配置完成，请断开SSH并重新连接后执行 echo $ZBP_BASE_PATH 验证 ====="

echo ""
echo ""

echo "===== 开始关闭SELinux ====="

echo "已关闭SELinux"
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config